#ifndef MOSES_MODULE_H
#define MOSES_MODULE_H

#include <string>
#include "ItemList.h"
#include "Value.h"

namespace moses
{
	class Runtime;
	class Function;

	class Module : public Item
	{
	public:
		MOSES_ITEM_VISITABLE()
		
		Module(ItemList<Function> *pFuncs);	
		
		Value		Bootstrap(Runtime *pEnv, const std::string &identifier, const std::string args);
		Function*	GetFunction(const std::string &identifier);
						
		ItemList<Function>*	GetFunctions();
		
	private:
		ItemList<Function>	*m_pFuncs;
	};
}

#endif